<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>OData Validator</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <link type="text/css" href="Styles/Site.css" rel="stylesheet" />
    <script src="Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
    <script src="Scripts/datajs-0.0.2.min.js" type="text/javascript"></script>
    <script src="Scripts/knockout-1.3.0beta.js" type="text/javascript"></script>
    <link type="text/css" href="Styles/Site.css" rel="stylesheet" />
      <script type="text/javascript">
          OData.defaultError = function (err) {
              $("#rules-block").append("Error retrieving rules. Please try again later.");
              $(".rules-table").hide();
          };

          $(function () {
              ko.applyBindings(theViewModel);
              theViewModel.loadRules();
          });

          function ruleModel() {
              this.Target = ko.observable();
              this.SpecSection = ko.observable();
              this.RuleDescription = ko.observable();
              this.RequirementLevel = ko.observable();
              this.Format = ko.observable();
          };

          // Define Main ViewModel
          var theViewModel = {
              rules: ko.observableArray([]),
              loadRules: function () {
                  var query = "RuleSet/Rules?$filter=Status eq 'Completed'&$orderby=SpecSection desc";
                  OData.read(query, function (data) {
                      theViewModel.rules.removeAll();
                      $.each(data.results, function (x, rule) {
                          theViewModel.rules.push(new ruleModel()
                        .Target(rule.Target)
                        .SpecSection(rule.SpecSection)
                        .RuleDescription(rule.RuleDescription)
                        .RequirementLevel(rule.RequirementLevel)
                        .Format(rule.Format));
                      });
                  });
              }
          };
    </script>
</head>
<body>
    <div id="wrapper">
        <div id="topBar">
        </div>
        <div id="header">
            <div id="version">
                Alpha Release - v0.1</div>
            <div id="navigation">
                <ul class="menu">
                    <li><a href=".">Home</a> |</li>
                    <li><a href="about.htm">About</a> |</li>
                    <li>Roadmap |</li>
                    <li><a href="feedback.htm">Feedback</a></li>
                </ul>
            </div>
        </div>
        <div id="infotop">
            <div id="logo">
                <img src="Images/ODataLogo.png" alt="logo" />
            </div>
            <div id="content">
                <h2>
                    Goal</h2>
                <p>
                    There are currently a number of applications and libraries which are &nbsp;<a href="http://www.odata.org/producers">producers</a>
                    and <a href="http://www.odata.org/consumers">consumers</a> of the OData protocol.
                    For this reason, interoperability of an OData service is key. The goal of this tool
                    is to enableOData service authors (i.e. OData producers) to validate their implementation
                    against the OData specification to ensure the service interoperates well with any
                    OData client.</p>
                <p>
                    The current (alpha) release of this tool runs a small representative set of rules
                    derived from the specification. As development of this tool continues additional
                    rules will be added such that a much more exhaustive set of rules are used to determine
                    compliance.</p>
                <h2>
                    What's in the release?</h2>
                <p>
                    The tool can currently validate the following types of OData endpoints:
                </p>
                <ul>
                    <li>Service document (e.g.&nbsp; <a href="http://services.odata.org/OData/OData.svc/">
                        http://services.odata.org/OData/OData.svc/</a> )</li>
                    <li>Metadata document (e.g. <a href="http://services.odata.org/OData/OData.svc/$metadata">
                        http://services.odata.org/OData/OData.svc/$metadata</a> )</li>
                    <li>A feed / collection (e.g. <a href="http://services.odata.org/OData/OData.svc/Products">
                        http://services.odata.org/OData/OData.svc/Products</a> or <a href="http://odata.netflix.com/V1/Catalog/Titles/?$top=5">
                            http://odata.netflix.com/V1/Catalog/Titles/?$top=5</a>) </li>
                    <li>An Entry (e.g. <a href="http://services.odata.org/OData/OData.svc/Products(0)">http://services.odata.org/OData/OData.svc/Products(0</a>)</li>
                </ul>
                <p>
                    The following URI constructs are currently not supported:</p>
                <ul>
                    <li>Select, Expand and Format system query options in the endpoint URIs </li>
                    <li>Endpoint URIs pointing to payloads larger than 1 MB </li>
                    <li>Authenticated feeds </li>
                </ul>
                <p>
                    This version of the tool has been validated with the following browsers. Please
                    report any issues on the OData mailing list.</p>
                <ul>
                    <li>Internet Explorer 8 and 9 </li>
                    <li>Firefox 3.6 and 4.0 </li>
                    <li>Chrome 9.0.597.84 and 10.0.648.204 </li>
                    <li>Safari 5.0 </li>
                </ul>
                <h2>
                    What's next?
                </h2>
                <p>
                    OData Service Validation Tool is updated every two weeks with the source code 
                    on <a href="http://odatavalidator.codeplex.com">Codeplex</a>.                
                </p>
                <p>
                    Make sure to follow the <a href="http://www.odata.org/blog">OData blog</a> as updates
                    (new rules, features, etc) to this service are announced there.</p>
                <a name="rules"></a>
                <h2>List of Rules</h2>
                <div id="rules-block">
                    <table class="rules-table">
                        <thead>
                            <tr>
                                <th>
                                    Target
                                </th>
                                <th>
                                    Section
                                </th>
                                <th>
                                    Format
                                </th>
                                <th>
                                    RequirementLevel
                                </th>
                                <th>
                                    Description
                                </th>
                            </tr>
                        </thead>
                        <tbody id="rules" data-bind="foreach: rules">
                            <tr>
                                <td data-bind="text: Target" ></td>
                                <td data-bind="text: SpecSection" ></td>
                                <td data-bind="text: Format" ></td>
                                <td data-bind="text: RequirementLevel" ></td>
                                <td data-bind="text: RuleDescription" ></td>
                            </tr>
                        </tbody>
                    </table>
                    </div>
                </div>
            </div>
    </div>

    <!-- START OF SmartSource Data Collector TAG -->
    <!-- Copyright (c) 1996-2009 WebTrends Inc.  All rights reserved. -->
    <!-- Version: MS.3.2.1 -->
    <script src="scripts/wt.js" type="text/javascript"></script>
    <!-- ----------------------------------------------------------------------------------- -->
    <!-- Warning: The two script blocks below must remain inline. Moving them to an external -->
    <!-- JavaScript include file can cause serious problems with cross-domain tracking.      -->
    <!-- ----------------------------------------------------------------------------------- -->
    <script type="text/javascript">
//<![CDATA[
        var _tag = new WebTrends();
        _tag.dcsid = "dcsc97avu10000kn75ujgpso2_7j5n";
        _tag.fpcdom = ".odata.org";
        _tag.dcsGetId();
        _tag.trackevents = true;
        //]]>>
    </script>
    <script type="text/javascript">
//<![CDATA[
        // Add custom parameters here.
        //_tag.DCSext.param_name=param_value;
        _tag.dcsCollect();
        //]]>>
    </script>
</body>
<noscript>
    <div>
        <img alt="DCSIMG" id="DCSIMG" width="1" height="1" src="http://m.webtrends.com/dcsc97avu10000kn75ujgpso2_7j5n/njs.gif?dcsuri=/nojavascript&amp;WT.js=No&amp;WT.tv=MS.3.0.0" /></div>
</noscript>
<!-- END OF SmartSource Data Collector TAG -->
</html>

